/*
 camera.h
 Dynamical
 Matthew Jee
 mcjee@ucsc.edu
*/

#ifndef MJ_CAMERA_H
#define MJ_CAMERA_H

#include "transform.h"
#include "matrix.h"
#include "vector.h"

namespace mj {

class Camera {
private:
    Matrix4 _projectionMatrix;
    float _left;
    float _right;
    float _bottom;
    float _top;
    float _near;
    float _far;
public:
    Transform transform;
    float zoom;

    Camera();
    void perspective(float left,
                     float right,
                     float bottom,
                     float top,
                     float near,
                     float far);
    void orthographic(float left,
                     float right,
                     float bottom,
                     float top,
                     float near,
                     float far);

    Matrix4 &projectionMatrix();
    Matrix4 viewMatrix();
    Matrix4 inverseViewMatrix();
};

}

#endif
